package com.Sep_Twenty;

import java.util.ArrayList;
import java.util.List;

/**
 * 17. 电话号码的字母组合
 * 给定一个仅包含数字 2-9 的字符串，返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
 *
 * 给出数字到字母的映射如下（与电话按键相同）。注意 1 不对应任何字母。
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/letter-combinations-of-a-phone-number
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * 2022/09/21 10:43
 */


public class Solution17 {

    static List<String> list=new ArrayList<>();
    public static List<String> letterCombinations(String digits) {
        if (digits==null||digits.length()==0) return list;
        String[] word={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
        backtracking(digits,word,0);
        return list;
    }

    static StringBuilder sb=new StringBuilder();

    public static void backtracking(String digits, String[] word, int num){
        if (num==digits.length())
        {
            list.add(sb.toString());
            return;
        }
        String str=word[digits.charAt(num)-'0'];
        for (int i=0;i<str.length();i++)
        {
            sb.append(str.charAt(i));
            backtracking(digits,word,num+1);
            sb.deleteCharAt(sb.length()-1);
        }
    }

    public static void main(String[] args) {
        System.out.println(letterCombinations("2"));
    }
}
